package site.sorghum.ddl.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DdlIndexWrap {
    /**
     * 表名
     */
    String table;
    /**
     * 索引名称
     */
    String indexName;
    /**
     * 列名
     */
    List<String> columnNames;
    /**
     * 是否唯一
     */
    boolean unique;

    /**
     * 获取索引名称
     * @return 索引名称
     */
    public String getIndexName() {
        if (indexName == null || indexName.isEmpty()) {
            indexName = columnUniqueIndexName(columnNames, unique);
        }
        return indexName;
    }

    /**
     * 获取列唯一索引名称
     */
    public static String columnUniqueIndexName(List<String> names, boolean unique) {
        return "IDX_" + String.join("_", names) + "_" + (unique ? "UNIQUE" : "NORMAL");
    }
}
